//package com.chengyu.core.controller.common;
//
//
//import java.util.Date;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//import java.util.Set;
//import java.util.concurrent.TimeUnit;
//
//import javax.servlet.http.HttpServletResponse;
//
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.data.redis.core.RedisTemplate;
//import org.springframework.http.ResponseEntity;
//import org.springframework.web.bind.annotation.GetMapping;
//import org.springframework.web.bind.annotation.PostMapping;
//import org.springframework.web.bind.annotation.RequestBody;
//import org.springframework.web.bind.annotation.RequestParam;
//import org.springframework.web.bind.annotation.RestController;
//import org.springframework.web.client.RestTemplate;
//
//import com.alibaba.fastjson.JSONObject;
//
//
//import io.swagger.annotations.Api;
//import io.swagger.annotations.ApiOperation;
//
//
///**
// * 微信公众号登录
// *
// * @author ruoyi
// */
//@RestController
//@Api(tags = "登录管理")
//public class WxLoginController {
//    @Autowired
//    private SysLoginService loginService;
//
//    @Autowired
//    private ISysMenuService menuService;
//
//    @Autowired
//    private SysPermissionService permissionService;
//
//    @Autowired
//    public RedisTemplate redisTemplate;
//
//    // 微信公众号的 app_id
//    String WE_CHAT_APP_ID = "wx9843a7***16539579";
//    // 微信公众号的 secret
//    String WE_CHAT_SECRET = "92177bfc4a2b2***45jbed03cc013ca2";
//    // 微信公众号的 access_token
//    String WE_CHAT_ACCESS_TOKEN = "**********";
//    // 微信公众号code获取地址
//    String WE_CHAT_CODE_URL = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=%s&redirect_uri=%s&response_type=code&scope=%s&state=STATE#wechat_redirect";
//    // 回调地址，获取open_id
//    String WE_CHAT_CALL_BACK_DOMAIN_URL = "http://zm.****.com/dev-api/getWeChatOpenId";
//    // 微信公众号的token获取地址
//    String WE_CHAT_ACCESS_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s";
//    // 微信公众号消息推送地址
//    String WE_CHAT_REQUEST_URL = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=%s";
//    // 微信公众号推送消息模板id
//    String WE_CHAT_TEMPLATE_ID = "**********";
//    // 微信公众号的消息回调地址（这儿可根据业务需求自定义动作，可选）
//    String WE_CHAT_CUSTOMER_CALL_URL = "https://***.***.***.***/***/***/accountInfo?keyword=%s";
//    // 微信公众号的主题颜色
//    String WE_CHAT_TOP_COLOR = "#A349A4";
//    // 微信公众号微信用户授权地址
//    String WE_CHAT_AUTHORIZATION_URL = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=%s&secret=%s&code=%s&grant_type=authorization_code";
//
//    /**
//     * 登录方法
//     *
//     * @param loginBody 登录信息
//     * @return 结果
//     */
//    @PostMapping("/wxlogin")
//    @ApiOperation("前端登录")
//    public AjaxResult wxlogin(@RequestBody LoginBody loginBody)
//    {
//
//        AjaxResult ajax = AjaxResult.success();
//        // 生成令牌
//        String token = loginService.wxlogin(loginBody.getUsername(), loginBody.getPassword(),
//                loginBody.getUuid());
//
//        ajax.put(Constants.TOKEN, token);
//        ajax.put("username", loginBody.getUsername());
//        return ajax;
//    }
//
//    /**
//     * Description:[获取公众号CODE]
//     *
//     */
//    @GetMapping("/getWeChatCode")
//    @ApiOperation("获取公众号CODE")
//    public AjaxResult getWeChatCode(HttpServletResponse response) {
//        AjaxResult ajax = AjaxResult.success();
//        try {
//            // 构建公众号消息体
//            String weChatGetCodeUrl = String.format(this.WE_CHAT_CODE_URL, this.WE_CHAT_APP_ID, this.WE_CHAT_CALL_BACK_DOMAIN_URL, WxConsts.OAuth2Scope.SNSAPI_BASE);
//
//            ajax.put("code", weChatGetCodeUrl);
//
//        } catch (Exception e) {
//            //log.info("异常信息:{}", e);
//        }
//
//        return ajax;
//    }
//
//    /**
//     * Description:[根据Code获取用户OpenId]
//     *
//     */
//    @GetMapping("/getWeChatOpenId")
//    @ApiOperation(value = "/getWeChatOpenId", notes = "根据Code获取用户OpenId")
//    public void getWeChatOpenId(@RequestParam String code, @RequestParam String state, HttpServletResponse response) {
//
//        try {
//
//            String weChatDomain = String.format(this.WE_CHAT_AUTHORIZATION_URL, this.WE_CHAT_APP_ID, this.WE_CHAT_SECRET, code);
//
//            RestTemplate restTemplate = new RestTemplate();
//            ResponseEntity<String> responseEntity = restTemplate.getForEntity(weChatDomain, String.class);
//            String openid = JSONObject.parseObject(responseEntity.getBody()).getString("openid");
//            String access_token = JSONObject.parseObject(responseEntity.getBody()).getString("access_token");
//
//            // 用户的OpenId，用户的微信授权Access_Token
//            response.sendRedirect("https://gd.lzhx65.com/pages/login/login?openid=" + openid );
//        } catch (Exception e) {
//
//        }
//
//    }
//
//    /**
//     * Description:[获取微信公众号的Access_Token]
//     *
//     * @return JSONResult
//     */
//    @GetMapping("/getAccessToken")
//    @ApiOperation("微信公众号的Access_Token")
//    public AjaxResult getAccessToken() {
//        AjaxResult ajax = AjaxResult.success();
//        try {
//
//            //redisTemplate.opsForValue().set("accessToken", "accessToken2345", 7200, TimeUnit.SECONDS);
//            //redisTemplate.delete("accessToken");
//            Object accessTokens = redisTemplate.opsForValue().get("accessToken");
//
//            if(accessTokens == null) {
//                // 微信公众号官方获取AccessToken
//                RestTemplate restTemplate = new RestTemplate();
//                String requestParams = String.format(this.WE_CHAT_ACCESS_TOKEN_URL, this.WE_CHAT_APP_ID, this.WE_CHAT_SECRET);
//                ResponseEntity<String> responseEntity = restTemplate.getForEntity(requestParams, String.class);
//
//                String accessToken = JSONObject.parseObject(responseEntity.getBody()).getString("access_token");
//
//                String errcode = JSONObject.parseObject(responseEntity.getBody()).getString("errcode");
//
//                if(accessToken != null && accessToken.length() != 0) {
//                    //redis缓存
//                    redisTemplate.opsForValue().set("accessToken", accessToken, 7200, TimeUnit.SECONDS);
//
//                    ajax.put("accessToken", accessToken);
//                }
//
//                ajax.put("errcode", errcode);
//            }
//
//            if(accessTokens != null) {
//                ajax.put("accessToken", accessTokens);
//            }
//
//            return ajax;
//        } catch (Exception e) {
//            //log.info("异常信息:{}", e);
//        }
//        return null;
//    }
//
//    /**
//     * Description:[公众号指定用户消息推送]
//     * @param msg
//     *
//     * @return JSONResult
//     */
//    @Log(title = "公众号消息管理", businessType = BusinessType.OTHER)
//    @GetMapping("/sendMsg")
//    @ApiOperation("公众号指定用户消息推送")
//    public AjaxResult sendMsg(@RequestParam String name, @RequestParam String openId, @RequestParam String accessToken, @RequestParam String templateId, @RequestParam String orderId, @RequestParam String tips, @RequestParam String title, @RequestParam String mobile, @RequestParam String times) {
//        AjaxResult ajax = AjaxResult.success();
//        // 模板参数
//        Map<String, WeChatTemplateMsg> sendMag = new HashMap<>();
//        // openId代表一个唯一微信用户，即微信消息的接收人
//        //String openId = "oNB9p1BpVJEquxxxxxxxxx";
//        // 公众号的模板id(也有相应的接口可以查询到)
//        //String templateId = "B0YStqTYdjHhY9Da9Sy2NM7xxxxxxxxxxx";
//        String zero = "0";
//        String one = "1";
//        String two = "2";
//        String three = "3";
//        String four = "4";
//        //组装消息数据
//        sendMag.put("first", new WeChatTemplateMsg("工单服务消息"));
//        sendMag.put("keyword1", new WeChatTemplateMsg(mobile));
//        sendMag.put("keyword2", new WeChatTemplateMsg(times));
//        //sendMag.put("keyword3", new WeChatTemplateMsg(msg));
//        //sendMag.put("keyword4", new WeChatTemplateMsg("444"));
//        //sendMag.put("remark", new WeChatTemplateMsg(msg));
//
//        if(tips.equals(zero)) {
//            sendMag.put("keyword3", new WeChatTemplateMsg(name + "-发新工单-" + title));
//            sendMag.put("remark", new WeChatTemplateMsg(name + "-发新工单-" + title));
//        }
//
//        if(tips.equals(one)) {
//            sendMag.put("keyword3", new WeChatTemplateMsg(name + "-受理-" + title));
//            sendMag.put("remark", new WeChatTemplateMsg(name + "-受理-" + title));
//        }
//
//        if(tips.equals(two)) {
//            sendMag.put("keyword3", new WeChatTemplateMsg(title + "-驳回"));
//            sendMag.put("remark", new WeChatTemplateMsg(title + "-驳回"));
//        }
//
//        if(tips.equals(three)) {
//            sendMag.put("keyword3", new WeChatTemplateMsg(title + "-验收通过"));
//            sendMag.put("remark", new WeChatTemplateMsg(title + "-验收通过"));
//        }
//        //System.out.println(tips);
//        if(tips.equals(four)) {
//            //System.out.println("wqe");
//            sendMag.put("keyword3", new WeChatTemplateMsg(name + "-申请验收-" + title));
//            sendMag.put("remark", new WeChatTemplateMsg(name + "-申请验收-" + title));
//        }
//
//        //拼接base参数
//        Map<String, Object> sendBody = new HashMap<>();
//        sendBody.put("touser", openId);               // openId
//        sendBody.put("url", "gd.lzhx65.com/pages/index/gzdetails?id=" + orderId);         // 点击模板信息跳转地址
//        sendBody.put("topcolor", "#FF0000");          // 顶色
//        sendBody.put("data", sendMag);                   // 模板参数
//        sendBody.put("template_id", templateId);      // 模板Id
//
//        //消息推送与发布
//        RestTemplate restTemplate = new RestTemplate();
//        String resultUrl = String.format(this.WE_CHAT_REQUEST_URL, accessToken);
//        ResponseEntity<String> forEntity = restTemplate.postForEntity(resultUrl, sendBody, String.class);
//
//        JSONObject jsonObject = JSONObject.parseObject(forEntity.getBody());
//
//
//        String messageCode = jsonObject.getString("errcode");
//
//        String msgId = jsonObject.getString("msgid");
//
//        ajax.put("msgcode", messageCode);
//        ajax.put("msgid", msgId);
//
//        //System.out.println("messageCode : " + messageCode + ", msgId: " +msgId);
//
//        return ajax;
//    }
//
//}
